package com.gqh.weather.controller;

import com.gqh.weather.auth.UserContext;
import com.gqh.weather.auth.UserInfo;
import com.gqh.weather.domain.dto.ReportResult;
import com.gqh.weather.exception.Result;
import com.gqh.weather.service.ReportService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 教育质量评价报告控制器
 */
@Slf4j
@RestController
@RequestMapping("/pingjia/zh/v1/report")
@Validated
public class ReportController {

    @Autowired
    private ReportService reportService;

    /**
     * 数据总览
     *
     * @param taskId 评价任务id
     * @param citycode 城市码
     * @return 数据总览结果
     */
//    @GetMapping("/overview")
//    public Result<Object> overview(@RequestParam Integer taskId,
//                                   @RequestParam(required = false) String citycode) {
//        log.info("数据总览，任务ID: {}, 城市码: {}", taskId, citycode);
//        try {
//            // 获取当前用户信息
//            UserInfo currentUser = UserContext.getCurrentUser();
//            boolean bSchool = false;
//            if (citycode == null || citycode.isEmpty()) {
//                citycode = currentUser.getCitycode();
//            } else {
//                bSchool = true;
//            }
//
//            // 调用服务方法获取数据总览
//            Object result = reportService.overview(taskId, citycode, bSchool);
//            return Result.success(result);
//        } catch (Exception e) {
//            log.error("数据总览失败，任务ID: " + taskId, e);
//            return Result.error("数据总览失败: " + e.getMessage());
//        }
//    }

    /**
     * 学业发展水平
     *
     * @param taskId 评价任务id
     * @param citycode 城市码
     * @return 学业发展水平结果
     */
    @GetMapping("/xueye")
    public Result<ReportResult> xueye(@RequestParam("task_id") Integer taskId,
                                @RequestParam(required = false) String citycode) {
        log.info("学业发展水平，任务ID: {}, 城市码: {}", taskId, citycode);
        try {
            // 获取当前用户信息
            UserInfo currentUser = UserContext.getCurrentUser();
            boolean bSchool = false;
            if (citycode == null || citycode.isEmpty()) {
                citycode = currentUser.getCitycode();
            } else {
                bSchool = true;
            }
            
            // 调用服务方法获取学业发展水平数据
            ReportResult result = reportService.xueye(taskId, citycode, bSchool);
            return Result.success(result);
        } catch (Exception e) {
            log.error("学业发展水平查询失败，任务ID: " + taskId, e);
            return Result.error("学业发展水平查询失败: " + e.getMessage());
        }
    }

//    /**
//     * 体质健康水平
//     *
//     * @param taskId 评价任务id
//     * @param citycode 城市码
//     * @return 体质健康水平结果
//     */
//    @GetMapping("/health")
//    public Result<Object> health(@RequestParam("task_id") Integer taskId,
//                                 @RequestParam(required = false) String citycode) {
//        log.info("体质健康水平，任务ID: {}, 城市码: {}", taskId, citycode);
//        try {
//            // 获取当前用户信息
//            UserInfo currentUser = UserContext.getCurrentUser();
//            boolean bSchool = false;
//            if (citycode == null || citycode.isEmpty()) {
//                citycode = currentUser.getCitycode();
//            } else {
//                bSchool = true;
//            }
//
//            // 调用服务方法获取体质健康水平数据
//            Object result = reportService.health(taskId, citycode, bSchool);
//            return Result.success(result);
//        } catch (Exception e) {
//            log.error("体质健康水平查询失败，任务ID: " + taskId, e);
//            return Result.error("体质健康水平查询失败: " + e.getMessage());
//        }
//    }
//
//    /**
//     * 心理健康水平
//     *
//     * @param taskId 评价任务id
//     * @param citycode 城市码
//     * @return 心理健康水平结果
//     */
//    @GetMapping("/mental")
//    public Result<Object> mental(@RequestParam("task_id") Integer taskId,
//                                 @RequestParam(required = false) String citycode) {
//        log.info("心理健康水平，任务ID: {}, 城市码: {}", taskId, citycode);
//        try {
//            // 获取当前用户信息
//            UserInfo currentUser = UserContext.getCurrentUser();
//            boolean bSchool = false;
//            if (citycode == null || citycode.isEmpty()) {
//                citycode = currentUser.getCitycode();
//            } else {
//                bSchool = true;
//            }
//
//            // 调用服务方法获取心理健康水平数据
//            Object result = reportService.mental(taskId, citycode, bSchool);
//            return Result.success(result);
//        } catch (Exception e) {
//            log.error("心理健康水平查询失败，任务ID: " + taskId, e);
//            return Result.error("心理健康水平查询失败: " + e.getMessage());
//        }
//    }
//
//    /**
//     * 艺术素质水平
//     *
//     * @param taskId 评价任务id
//     * @param citycode 城市码
//     * @return 艺术素质水平结果
//     */
//    @GetMapping("/art")
//    public Result<Object> art(@RequestParam("task_id") Integer taskId,
//                              @RequestParam(required = false) String citycode) {
//        log.info("艺术素质水平，任务ID: {}, 城市码: {}", taskId, citycode);
//        try {
//            // 获取当前用户信息
//            UserInfo currentUser = UserContext.getCurrentUser();
//            boolean bSchool = false;
//            if (citycode == null || citycode.isEmpty()) {
//                citycode = currentUser.getCitycode();
//            } else {
//                bSchool = true;
//            }
//
//            // 调用服务方法获取艺术素质水平数据
//            Object result = reportService.art(taskId, citycode, bSchool);
//            return Result.success(result);
//        } catch (Exception e) {
//            log.error("艺术素质水平查询失败，任务ID: " + taskId, e);
//            return Result.error("艺术素质水平查询失败: " + e.getMessage());
//        }
//    }
}